{$CLEO .cs}
{$USE CLEO+}
{$USE newOpcodes}
{$USE ini}

0000: NOP

script_name "Object in hand"

// By ArtemQa146

//    
repeat
wait 500
0AF0: 0@ = read_int_from_ini_file "cleo\Peds use Vends.ini" section "Models" key "Loaded2"
until 0@ == 1
0AF1: write_int 0 to_ini_file "cleo\Peds use Vends.ini" section "Models" key "Loaded2"

0AF0: 0@ = read_int_from_ini_file "cleo\Busy Pedestrians.ini" section "Settings" key "Food in the player hand"
if
    0@ == 0
then
    0A93: terminate_this_custom_script
end

const
    Car_Vend = 0@
    Vend_Obj = 31@
    Find_Obj = 30@
    Find_Car = 29@
    Render_Model_Donut = 17@
    Render_Model_Chicken = 19@
    Render_Model_Burger = 28@
    Render_Model_Pizza = 27@
    Render_Model_Eat1 = 26@
    Render_Model_Eat2 = 25@
    Render_Model_Dog = 24@
    Render_Model_ice = 22@
    Render_Model_China = 21@
    Player_Check = 20@

    Vend_Or_Cart = 23@

    Vend = 1
    Cart = 2
    Vend_Car = 3
    Food_Eating = 4
    Rusty_brown = 5
end

// 16@

repeat
wait 0
until player.Defined(0)

//       ,    
0AF0: Render_Model_Eat1 = read_int_from_ini_file "cleo\Peds use Vends.ini" section "Models" key "Eat1"
0AF0: Render_Model_Eat2 = read_int_from_ini_file "cleo\Peds use Vends.ini" section "Models" key "Eat2"
0AF0: Render_Model_Dog = read_int_from_ini_file "cleo\Peds use Vends.ini" section "Models" key "dog"
0AF0: Render_Model_Ice = read_int_from_ini_file "cleo\Peds use Vends.ini" section "Models" key "ice"
0AF0: Render_Model_China = read_int_from_ini_file "cleo\Peds use Vends.ini" section "Models" key "ChinaEat"
0AF0: Render_Model_Chicken = read_int_from_ini_file "cleo\Peds use Vends.ini" section "Models" key "chicken"
0AF0: Render_Model_Donut = read_int_from_ini_file "cleo\Peds use Vends.ini" section "Models" key "donut"

0F02: create_render $player_actor special_model Render_Model_Eat1 bone 34 offset 0.09 0.05 0.01 rotation 0 90.0 180.0 store_to Render_Model_Eat1
0F02: create_render $player_actor special_model Render_Model_Eat2 bone 34 offset 0.09 0.05 0.01 rotation 0 90.0 180.0 store_to Render_Model_Eat2
0E37: set_render_object_scale Render_Model_Eat1 0.7 0.7 0.7
0E37: set_render_object_scale Render_Model_Eat2 0.7 0.7 0.7

0F02: create_render $player_actor special_model Render_Model_Dog bone 34 offset 0.09 0.05 0.01 rotation 0 90.0 180.0 store_to Render_Model_Dog
0E37: set_render_object_scale Render_Model_Dog 0.8 0.8 0.8
0F02: create_render $player_actor special_model Render_Model_Ice bone 34 offset 0.09 0.05 0.01 rotation 0 90.0 180.0 store_to Render_Model_Ice
0E37: set_render_object_scale Render_Model_Ice 0.8 0.8 0.8
0F02: create_render $player_actor special_model Render_Model_China bone 34 offset 0.09 0.05 0.01 rotation 0 90.0 180.0 store_to Render_Model_China
0E37: set_render_object_scale Render_Model_China 0.8 0.8 0.8
0F02: create_render $player_actor special_model Render_Model_Chicken bone 24 offset 0 0 0 rotation 0 0 0 store_to Render_Model_Chicken
0F02: create_render $player_actor special_model Render_Model_Donut bone 24 offset 0 0 0 rotation 0 0 0 store_to Render_Model_Donut
0E37: set_render_object_scale Render_Model_Donut 0.8 0.8 0.8

model.Load(2702)
model.Load(2880)
if
    not model.Available(2702)
then
    repeat
    wait 0
    model.Load(2702)
    until model.Available(2702)
end
if
    not model.Available(2880)
then
    repeat
    wait 0
    model.Load(2880)
    until model.Available(2880)
end
038B: load_requested_models
0E2E: create_render_object_to_char_bone $player_actor model 2702 bone 24 offset 0.05 0.1 0.0 rotation 0 0 0 store_to Render_Model_Pizza
0E37: set_render_object_scale Render_Model_Pizza 0.8 0.8 0.8
0E2E: create_render_object_to_char_bone $player_actor model 2880 bone 24 offset 0 0 0 rotation 0 0 0 store_to Render_Model_Burger
0E37: set_render_object_scale Render_Model_Burger 0.8 0.8 0.8
model.Destroy(2702)
model.Destroy(2880)


gosub @Render_Hide

while true
wait 50
    if
        player.Defined(0)
    then
    
        //  ,    --------------------------------------------------------
        
        Vend_Or_Cart = 0
        
        if
            not $ACTIVE_INTERIOR == 0
        then
            0AAA: 1@ = get_script_struct_named 'JFUD'
            if
                1@ > 0 //    
            then
                Vend_Or_Cart = Food_Eating
                gosub @Player_Actor //       
            end
        end
        
        
        //  3   "Rusty Brown's" --------------------------------------------------------
        
        if
            0EEA: locate_char_distance_to_coordinates $player_actor pos 379.0799 -186.6528 1000.633 radius 10.0
        then
            Vend_Or_Cart = Rusty_brown
            gosub @Player_Actor //       
        end


        //     --------------------------------------------------------
        
        Find_Obj = 0 
        while 0EA9: get_any_object_no_save_recursive Find_Obj progress_to Find_Obj object_to Vend_Obj
        Vend_Or_Cart = 0

            // . 
            if or
                09CC:   object Vend_Obj model_is 1776 //   
                09CC:   object Vend_Obj model_is 956 //   
                09CC:   object Vend_Obj model_is 1977 //   
            then
                if
                    0EE6: locate_char_distance_to_object $player_actor object Vend_Obj radius 5.0
                then
                    Vend_Or_Cart = Vend
                end
            end

            //  . 
            if or
                09CC:   object Vend_Obj model_is 1340 //  
                09CC:   object Vend_Obj model_is 1342 //  
                09CC:   object Vend_Obj model_is 1341 // 
            then
                0AAA: 1@ = get_script_struct_named 'FODVEND'
                if and
                    0EE6: locate_char_distance_to_object $player_actor object Vend_Obj radius 5.0
                    1@ > 0 //    , ..  
                then
                    Vend_Or_Cart = Cart
                end
            end

            gosub @Player_Actor //       

        end
        
        //     --------------------------------------------------------
        
        Find_Car = 0
        while 0EA8: get_any_car_no_save_recursive Find_Car progress_to Find_Car car_to Car_Vend
        Vend_Or_Cart = 0
            if and
                0EE5: locate_char_distance_to_car $player_actor car Car_Vend radius 10.0
                0137:   car Car_Vend model == 588
            then
                0AAA: 1@ = get_script_struct_named 'HOTDOGV'
                if
                    1@ > 0 //    
                then
                    Vend_Or_Cart = Vend_Car
                end
            end

            gosub @Player_Actor //       
            
        end
    end
end


//     -------------------------------------------------------------

:Player_Actor

    if
        Player_Check == false //   
    then
        if or
            0611:   actor $player_actor performing_animation "VEND_EAT1_P"
            0611:   actor $player_actor performing_animation "VEND_EAT_P"
            0611:   actor $player_actor performing_animation "EAT_BURGER"
            0611:   actor $player_actor performing_animation "EAT_CHICKEN"
            0611:   actor $player_actor performing_animation "EAT_PIZZA"
        then

            //      
            if
                0611:   actor $player_actor performing_animation "VEND_EAT1_P"
            then
                0613: 1@ = actor $player_actor animation "VEND_EAT1_P" time
                if or
                    1@ > 0.5
                    1@ < 0.1
                then
                    return
                end
            end

            //      
            if
                0611:   actor $player_actor performing_animation "VEND_EAT_P"
            then
                0613: 1@ = actor $player_actor animation "VEND_EAT_P" time
                if or
                    1@ > 0.8
                    1@ < 0.1
                then
                    return
                end
            end

            if or
                Vend_Or_Cart == Vend
                Vend_Or_Cart == Cart
                Vend_Or_Cart == Vend_Car
                Vend_Or_Cart == Food_Eating
                Vend_Or_Cart == Rusty_brown
            then

                if
                    Vend_Or_Cart == Vend
                then
                    0209: 1@ = random_int_in_ranges 1 3
                    if 1@ == 1
                    then 0E31: set_render_object_visible Render_Model_Eat1 1
                    else 0E31: set_render_object_visible Render_Model_Eat2 1
                    end
                    Player_Check = true //     
                    return
                end

                if
                    Vend_Or_Cart == Cart
                then
                    if 09CC:   object Vend_Obj model_is 1340 //  
                    then 0E31: set_render_object_visible Render_Model_Dog 1
                    end
                    if 09CC:   object Vend_Obj model_is 1342 //  
                    then 0E31: set_render_object_visible Render_Model_China 1
                    end
                    if 09CC:   object Vend_Obj model_is 1341 // 
                    then 0E31: set_render_object_visible Render_Model_ice 1
                    end
                    Player_Check = true //     
                    return
                end
                        
                if
                    Vend_Or_Cart == Vend_Car
                then
                    0E31: set_render_object_visible Render_Model_Dog 1
                    Player_Check = true //     
                    return
                end
                
                if
                    Vend_Or_Cart == Food_Eating
                then
                    if
                        0611:   actor $player_actor performing_animation "EAT_PIZZA"
                    then
                        0E31: set_render_object_visible Render_Model_Pizza 1
                        Player_Check = true //     
                        return
                    end
                    
                    if
                        0611:   actor $player_actor performing_animation "EAT_BURGER"
                    then
                        0E31: set_render_object_visible Render_Model_Burger 1
                        Player_Check = true //     
                        return
                    end
                    
                    if
                        0611:   actor $player_actor performing_animation "EAT_CHICKEN"
                    then
                        0E31: set_render_object_visible Render_Model_Chicken 1
                        Player_Check = true //     
                        return
                    end
                end
                
                if
                    Vend_Or_Cart == Rusty_brown
                then
                    if
                        0611:   actor $player_actor performing_animation "EAT_BURGER"
                    then
                        0E31: set_render_object_visible Render_Model_Donut 1
                        Player_Check = true //     
                        return
                    end
                end
            end
        end
    end

    if
        Player_Check == true //  
    then
        if and
            8611:   not actor $player_actor performing_animation "VEND_EAT_P"
            8611:   not actor $player_actor performing_animation "VEND_EAT1_P"
            8611:   not actor $player_actor performing_animation "EAT_CHICKEN"
            8611:   not actor $player_actor performing_animation "EAT_BURGER"
            8611:   not actor $player_actor performing_animation "EAT_PIZZA"
        then
            gosub @Render_Hide
            Player_Check = false
        else
            if
                0611:   actor $player_actor performing_animation "VEND_EAT1_P"
            then
                0613: 1@ = actor $player_actor animation "VEND_EAT1_P" time
                if
                    1@ > 0.6
                then
                    gosub @Render_Hide
                    Player_Check = false
                end
            else
                if
                    0611:   actor $player_actor performing_animation "VEND_EAT_P"
                then
                    0613: 1@ = actor $player_actor animation "VEND_EAT_P" time
                    if
                        1@ > 0.9
                    then
                        gosub @Render_Hide
                        Player_Check = false
                    end
                end
            end
        end
    end

return

:Render_Hide
0E31: set_render_object_visible Render_Model_Dog 0
0E31: set_render_object_visible Render_Model_China 0
0E31: set_render_object_visible Render_Model_Eat1 0
0E31: set_render_object_visible Render_Model_Eat2 0
0E31: set_render_object_visible Render_Model_ice 0
0E31: set_render_object_visible Render_Model_Pizza 0
0E31: set_render_object_visible Render_Model_Burger 0
0E31: set_render_object_visible Render_Model_Chicken 0
0E31: set_render_object_visible Render_Model_Donut 0
return




